/*  This file is part of -_-.

    -_- is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    -_- is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with -_-.  If not, see <http://www.gnu.org/licenses/>.

    Copyright 2012 Oliver Katz */

#ifndef __VISUAL_DISPLAY_ENGINE_LOADER_H
#define __VISUAL_DISPLAY_ENGINE_LOADER_H

#include <iostream>
#include "display_engine.h"
#include <dlfcn.h>

namespace sleepyface
{
    namespace visual
    {
        namespace display_engine
        {
            class DisplayEngineLoader
            {
            private:
            	void *handle;
            	typedef char **(*lister)();

            public:
                DisplayEngineLoader();
            	DisplayEngineLoader(string path);
            	~DisplayEngineLoader();
                bool good();
            	vector<string> listWidgetRenderers();
            	vector<string> listContainerRenderers();
            	WidgetRenderer getWidgetRenderer(string n);
            	ContainerRenderer getContainerRenderer(string n);
            };
        }
    }
}

#endif